package com.zero.ava.kernel;

import com.zero.ava.auth.Identity;

public interface TransactionScheduler {

	TaskReservation reserveTask(KernelRunnable task, Identity owner);

	TaskReservation reserveTask(KernelRunnable task, Identity owner, long startTime);

	void scheduleTask(KernelRunnable task, Identity owner);

	void scheduleTask(KernelRunnable task, Identity owner, long startTime);

	RecurringTaskHandle scheduleRecurringTask(KernelRunnable task, Identity owner, long startTime, long period);

	void runTask(KernelRunnable task, Identity owner) throws Exception;

	TaskQueue createTaskQueue();

}
